\documentclass{book}

\usepackage{xeCJK}
\usepackage{algorithm2e}
\usepackage{algorithmic}
\usepackage{algpseudocode}
\usepackage{algpseudocodex}
\title{算法导论笔记}
\author{王怀贺}

\begin{document}
    \maketitle
    \tableofcontents
    \section*{算法基础}
    \begin{algorithm}
        \caption{在 KD-Tree 上添加新数据}
        \begin{algorithmic}
            \STATE \textbf{输入}：新数据 $x$，树根 $root$，叶子阈值 $T$
            \STATE \textbf{输出}：树根 $root$
            \PROCEDURE{AddData}{$x,root,T$}
                \IF{$root.isleaf = 1$}
                    \STATE // 判断是否需要分裂
                    \IF{$|root.data| \ge T$}
                        \STATE $root :=$ \CALL{KDTree}{$root.data \cup \{x\}$}
                    \ELSE
                        \STATE $root.data := root.data \cup \{x\}$
                    \ENDIF
                    \RETURN $root$
                \ENDIF
                \STATE // 递归进入左右子树
                \IF{$x[root.pivot] \le root.med$}
                    \STATE \CALL{AddData}{$x,root.left,T$}
                \ELSE
                    \STATE \CALL{AddData}{$x,root.right,T$}
                \ENDIF
                \RETURN $root$
            \ENDPROCEDURE
        \end{algorithmic}
    \end{algorithm}


\end{document}